import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Demo2 {
    /**
     * Arrays工具类常用方法
     * @param args
     */
    public static void main(String[] args) {


        //将多个元素合并到一个List集合中。次集合的实现类是java.util.Arrays$ArrayList
        //注意不要把他和java.util.ArrayList类混淆了
        List<Integer> integers = Arrays.asList(5, 3, 1, 4, 2);
        //Integer remove = integers.remove(0);
        //System.out.println("被删除的元素：" + remove);

        //一个无序的数组
        int[] arr = {5, 3, 1, 4, 2};
        System.out.println("排序前：" + Arrays.toString(arr));
        //对数组排序
        Arrays.sort(arr);
        System.out.println("排序后：" + Arrays.toString(arr));

        //利用二分法在一个有序的数组中查找元素
        int index = Arrays.binarySearch(arr, 2);
        System.out.println(index < 0 ? "数组中不存在该元素" : "该元素在数组中的下标：" + index);
        System.out.println("------------------------");
        //对数组备份,对arr数组备份，返回新的数组，长度自定义
        int[] copyOf = Arrays.copyOf(arr, arr.length);
        System.out.println("arr == copyOf :" + (arr == copyOf));
        /*int i = 1;
        test(i, copyOf);
        System.out.println("i = " + i); // 1
        System.out.println("arr = " + Arrays.toString(arr)); //666  2 3 4 5*/


    }

    //方法参数的引用传递和值传递的区别
    public static void test(int i, int[] arr) {
        i = 8888;
        arr[0] = 6666;
        System.out.println("test i = " + i); // 888
        System.out.println("test arr = " + Arrays.toString(arr));
    }
}
